package main

import (
	"fmt"
	"path/filepath"
)

func main() {
	//Rel返回一个相对路径，当与basepath连接时，它在词法上等同于targpath，中间有一个分隔符。
	//也就是说，Join(basepath, Rel(basepath, targpath))等同于targpath本身。
	//如果成功，返回的路径将总是相对于basepath的，即使basepath和targpath没有共享元素。
	//如果targpath不能相对于basepath，或者需要知道当前工作目录来计算它，则返回错误。Rel对结果调用Clean。

	paths := []string{
		"/a/b/c",
		"/b/c",
		"./b/c",
	}
	base := "/a"

	fmt.Println("On Unix:")
	for _, p := range paths {
		rel, err := filepath.Rel(base, p)
		fmt.Printf("%q: %q %v\n", p, rel, err)
	}
	//On Unix:
	//"/a/b/c": "b/c" <nil>
	//"/b/c": "../b/c" <nil> //这个结果是个什么鬼？
	//"./b/c": "" Rel: can't make ./b/c relative to /a
}
